// pages/goods_list/goods_list.js
import {
  request
} from "../../request/index.js";


Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 选项卡
    tabs: [{
        id: 0,
        value: "综合",
        isActive: true
      },
      {
        id: 1,
        value: "销量",
        isActive: false
      },
      {
        id: 2,
        value: "价格",
        isActive: false
      }
    ],
    // 商品列表数据
    goodsList: [],
  },

  // 查询商品列表接口所需要的参数
  QueryParam: {
    query: "",
    cid: "",
    pagenum: 1,
    pagesize: 10
  },
  // 总页数
  TotalPage: 0,

  /**
   * 子传父
   */
  handleTabsChange(event) {
    const {
      index
    } = event.detail;
    let {
      tabs
    } = this.data.tabs;
    // 选中
    this.data.tabs.forEach((v, i) =>
      v.id === index ? v.isActive = true : v.isActive = false
    );
    this.setData({
      tabs: this.data.tabs
    })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function(options) {
    // 设置分类ID
    this.QueryParam.cid = options.cid
    // 获取商品列表数据
    this.getGoodsListByCid();
  },

  /**
   * 监听用户下拉刷新
   */
  onPullDownRefresh: function() {
    // 重置数据
    this.setData({
      goodsList: []
    })
    this.QueryParam.pagenum = 1;


    // 显示顶部刷新图标
    wx.showNavigationBarLoading();

    // 重新获取商品列表数据
    // this.QueryParam.pagenum = 2;  // 模拟刷新效果
    this.getGoodsListByCid(function() {
      // 隐藏顶部刷新图标
      wx.hideNavigationBarLoading();
      // 停止下拉事件
      wx.stopPullDownRefresh();
    });
  },

  /**
   * 上拉触底事件，查询下一页数据
   *  1 获取总页数
   *  2 判断是否存在下一页
   */
  onReachBottom: function() {
    console.log("上拉触底事件，查询下一页数据");
    // 判断是否存在下一页
    if (this.QueryParam.pagenum >= this.TotalPage) {
      // 否，最后一页
      wx.showToast({
        title: '已经是最后一页了',
      })
    } else {
      // 是，获取下一页数据
      this.QueryParam.pagenum++;
      this.getGoodsListByCid();
    }
  },


  /**
   * 获取商品列表数据
   * @param callback 回调函数
   */
  async getGoodsListByCid(callback) {
    const res = await request({
      url: '/goods/search',
      data: this.QueryParam
    });
    let data = res.message;
    this.setData({
      goodsList: [...this.data.goodsList, ...data.goods]
    })
    // 设置总页数 
    this.TotalPage = Math.ceil(data.total / this.QueryParam.pagesize);

    if (callback !== null && typeof callback === "function") {
      // 回调函数
      callback();
    }

  },

})